home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / c / blf082b / main.c < prev    next >
C/C++ Source or Header  |  1993-12-11  |  4KB  |  184 lines

  1. /*
  2.  *    BloufGate
  3.  *    Main driver
  4.  *
  5.  *    Public domain: may be copied and sold freely
  6.  */
  7.  
  8. #include    "blouf.h"
  9.  
  10. #define MODENEWS    1
  11. #define MODEMAIL    2
  12. #define MODEFIDO    3
  13. #define MODEMBOX    4
  14.  
  15. /* Global vars declarations */
  16.  
  17. #ifdef ATARIST
  18. #ifdef LATTICE
  19. unsigned long _STACK=0x4000;        /* stack size = 16 K */
  20. #endif
  21. #endif
  22.  
  23. /*
  24.  *    main driver
  25.  *
  26.  *    syntax:    blouf [-c<blouf.ctl>] [-s<site>] -f|-n|-m <files...>
  27.  *    novice:    blouf -fido|-news|-mail <files...>
  28.  */
  29.  
  30. int main(int argc, char **argv)
  31. {
  32.     int mode, optind;
  33.  
  34.     char cfgfile[FILENAME_MAX];    /* config file */
  35.     char condit[BLFSTR];        /* conditions */
  36.     char overto[BLFSTR];         /* to field */
  37.     char *cond_ptr=NULL;        /* condition pointer */
  38.     FILE *pkt=NULL;                /* packet */
  39.     char *to_env_ptr=NULL;         /* force to: field */
  40.     int dispflag=0;                /* debug config flag */
  41.     int dupeflag=0;                /* dupe file */
  42.  
  43.     /* Public Domain notice */
  44.     printf ("%s %s - Public Domain 1991-1993\n\n",ProgName,Version);
  45.  
  46.     /* config filename */
  47.     if (getenv("BLOUFRC"))
  48.         strcpy(cfgfile, getenv("BLOUFRC"));
  49.     else    
  50.         strcpy(cfgfile,DEFAULT_CONFIG);
  51.  
  52.     /* init mode */
  53.     mode=-1;
  54.     
  55.     /* parse command line */
  56.     optind=0;
  57.     while( (++optind<argc) && ((*(argv[optind]))=='-') )
  58.     {
  59.         
  60.         if(strlen(argv[optind])>1)
  61.         {
  62.             switch(*(argv[optind]+1))
  63.             {
  64.                 case 's':    /* label for config file */
  65.                 strcpy(condit,argv[optind]+2);
  66.                 cond_ptr=condit;
  67.                 break;
  68.                 case 't':    /* To: override */
  69.                 strcpy(overto,argv[optind]+2);
  70.                 to_env_ptr=overto;
  71.                 break;
  72.                 case 'c':    /* config file */
  73.                 strcpy(cfgfile,argv[optind]+2);
  74.                 break;
  75.                 case 'd':    /* debug */
  76.                 dispflag++;
  77.                 break;
  78.                 case 'f':     /* -fido|-fug */
  79.                 mode=MODEFIDO;
  80.                 break;
  81.                 case 'm':     /* -mail */
  82.                 if(strcmp(argv[optind],"-mbox")==0)
  83.                     mode=MODEMBOX;
  84.                 else
  85.                     mode=MODEMAIL;
  86.                 break;
  87.                 case 'n': /* -news */
  88.                 mode=MODENEWS;
  89.                 break;
  90.             }
  91.         }
  92.     }
  93.  
  94.     /* read config file */
  95.     printf("Parsing configuration.\n");
  96.     if(readconfig(cfgfile,cond_ptr)==FAIL)
  97.     {
  98.         if(readconfig("blouf.cfg",cond_ptr)==FAIL)
  99.         {
  100.             printf("can't read config file\n");
  101.             return 10;
  102.         }
  103.     }
  104.  
  105.     /* display config file */
  106.     if(dispflag)
  107.         displayconfig();
  108.     
  109.     /* check mode */
  110.     if(mode<0)
  111.     {
  112.         printf("command line error: missing mode.\n");
  113.         usage();
  114.     }
  115.     else
  116.     {
  117.         for(;optind<argc;optind++)
  118.         {
  119.             switch(mode)
  120.             {
  121.                 case MODENEWS:
  122.                 if(!pkt)
  123.                     pkt=openpacket();
  124.                 if(!dupeflag)
  125.                 {
  126.                     logline("=Opening dupe checker (%ld)",
  127.                         dupechk_open(cf->dupefile[0] ? cf->dupefile : NULL));
  128.                     dupeflag++;
  129.                 }
  130.                 process_news(argv[optind],pkt);
  131.                 break;
  132.                 
  133.                 case MODEMBOX:
  134.                 if(!pkt)
  135.                     pkt=openpacket();
  136.                 process_mailbox(argv[optind],pkt,to_env_ptr);
  137.                 break; /*modembox*/
  138.     
  139.                 case MODEMAIL:
  140.                 if(!pkt)
  141.                     pkt=openpacket();
  142.                 if(process_rfcfile(argv[optind],pkt,to_env_ptr)==FAIL)
  143.                     logline("?Can't process mail");
  144.                 else if(cf->keep==FALSE)
  145.                     remove(argv[optind]);
  146.                 break; /*modemail*/
  147.     
  148.                 case MODEFIDO:
  149.                 if(process_packet(argv[optind])==FAIL)
  150.                     logline("!Can't process packet");
  151.                 break;
  152.             }
  153.         } /*endfor*/
  154.     }
  155.  
  156.     if(pkt)
  157.         closepacket(pkt);
  158.     
  159.     if(dupeflag) /* close dupechecker if opened */
  160.         dupechk_close();
  161.     cleanconfig(); /* close config */
  162.     
  163.     return 0;
  164. }
  165.  
  166. /*
  167.  * Prints usage
  168.  */
  169.  
  170. void usage(void )
  171. {
  172.     printf("\nstandard syntax:\n"
  173.         "  blouf [-c<ctrl-file>] [-s<label>] [-t<to>] [-d] -fido|-news|-mail|-mbox <files...>\n"
  174.         "  -c    : use specified <ctrl-file> instead of default\n"
  175.         "  -t    : <to> will be used instead of mail's To: field\n"
  176.         "  -d    : print parsed config file to stdout\n"
  177.         "  -s    : <label> for conditional control files\n"
  178.         "  -fido : <files> are fidonet packets to convert\n"
  179.         "  -news : <files> are batched news files (not compressed)\n"
  180.         "  -mail : <files> are rfc822 mails\n"
  181.         "  -mbox : <files> are batches of rfc822 mails as in a unix mailbox file\n\n");
  182. }
  183.  
  184. /**/